<?php
require_once 'abstractModel.php';

class UserModel extends AbstractModel{
	//TABLE NAME
	const TABLE_NAME_USER = 'tUser';

	//USER COLUMN NAMES
	const USER_ID = 'userId';
	const USER_PASSWORD = 'userPassword';
	const USER_NAME = 'userName';
	const USER_CREATE_DATE = 'userCreateDate';
	const USER_PROFILE = 'userProfile';
	const USER_PRIVILEGE = 'userPrivilege';

	public function __construct(){
		parent::__construct();
		$this->targetTable = self::TABLE_NAME_USER;
	}

	/**
	 *
	 * @todo 空のメッソド継承したが、使う必要なし
	 */

	public function setTargetTable($targetTable){}

	/**
	 * (non-PHPdoc)
	 * @see AbstractModel::insert()
	 * @todo  USER情報をDB,TABLE(tUser)にinsertするメッソド
	 * @param 下の4つのparameterが必要
	 * @param 1.(String)userId - ユーザーのID
	 * @param 2.(String)userPassword - ユーザーのパスワード (md5形式)
	 * @param 3.(String)userName   - ユーザーの名前
	 * @return boolean
	 */

	public function insert(){
		$_userId = func_get_arg(0);
		$_userPassword = func_get_arg(1);
		$_userName = func_get_arg(2);
		$sth = $this->db->prepare("Insert into {$this->targetTable}(userId, userPassword, userName)
				values(?, password(?), ?)");
		$sth->bindParam(1, $_userId);
		$sth->bindParam(2, $_userPassword);
		$sth->bindParam(3, $_userName);
		return $sth->execute();
	}

	/**
	 * (non-PHPdoc)
	 * @see AbstractModel::select($sth)
	 * @todo USER情報をDB,TABLE(tUser)にselectするメッソド
	 * @param parameterにstatementを
	 * @param  ex) $a = new UserModel();
	 * @param  $db=DBConnector::getDB();
	 * @param  $sth=$db->prepare("Select * from tUser");
	 * @param  $a->select($sth);
	 * @return array
	 */

	public function select($sth){
		return parent::select($sth);
	}

	/**
	 * (non-PHPdoc)
	 * @see AbstractModel::update()
	 * @todo  USER情報をDB,TABLE(tUser)にupdateするメッソド
	 * @param 下の4つのparameterが必要
	 * @param 1.(String) userId - ユーザーのID
	 * @param 2.(String) userPassword - ユーザーのパスワード (md5形式)
	 * @param 3.(String) userName   - ユーザーの名前
	 * @param 4.(String) userProfile - ユーザーのプロフィール (JSON形式)
	 * @param 5.(String) userId - ユーザーのIDで条件検索
	 * @return boolean
	 */

	public function update(){
		$sth = $this->db->prepare("Update tUser SET userId=?, userPassword=password(?), userName=?, userProfile=? WHERE userId=?");
		$sth->bindParam(1, func_get_arg(0));
		$sth->bindParam(2, func_get_arg(1));
		$sth->bindParam(3, func_get_arg(2));
		$sth->bindParam(4, func_get_arg(3));
		$sth->bindParam(5, func_get_arg(4));
		return $sth->execute();
	}

	/**
	 * (non-PHPdoc)
	 * @see AbstractModel::delete($where)
	 * @todo  USER情報をDB,TABLE(tUser)にdeleteするメッソド
	 * @param 下の1つのparameterが必要
	 * @param 1.(String) userId - ユーザーのIDで条件検索
	 * @return boolean
	 */

	public function delete($where){
		$sth = $this->db->prepare("Delete from {$this->targetTable} where userId=?");
		$sth->bindParam(1, $where);
		return $sth->execute();
	}
}